package com.software.usercenter.judge;

import java.util.ArrayList;
import java.util.List;

public class JudgeMethod {
    // Java黑名单
    public static boolean checkJavaCodeSafe(String code) {
        List<String> blackList = new ArrayList<>();
        // 禁止系统指令
        blackList.add("runtime");
        blackList.add("exec");
        // 禁止读写文件
        blackList.add("java.io");
        // 禁止访问网络
        blackList.add("java.net");

        for (String target : blackList) {
            int pos = code.indexOf(target);
            if (pos >= 0) {
                return false;
            }
        }
        return true;
    }
    //C/C++语言黑名单
    public static boolean checkCCodeSafe(String code) {
        List<String> blackList = new ArrayList<>();
        // 禁止系统指令
        blackList.add("system");
        //禁用文件类
        blackList.add("file");
        // 禁止各种库
        blackList.add("windows.h");
        blackList.add("unistd.h");
        blackList.add("netdb.h");
        blackList.add("sys/socket.h");
        blackList.add("sys/types.h");
        blackList.add("fstream.h");

        for (String target : blackList) {
            int pos = code.indexOf(target);
            if (pos >= 0) {
                return false;
            }
        }
        return true;
    }
    //python黑名单
    public static boolean checkPythonCodeSafe(String code) {
        List<String> blackList = new ArrayList<>();
        // 禁止读写文件
        blackList.add("open");
        blackList.add("fileinput");
        //禁止系统指令
        blackList.add("os.system");
        blackList.add("os.popen");
        blackList.add("commands");
        blackList.add("subprocess");
        //禁止网络操作
        blackList.add("socket");
        blackList.add("requests");
        blackList.add("urllib");
        blackList.add("ftplib");
        blackList.add("smtplib");

        for (String target : blackList) {
            int pos = code.indexOf(target);
            if (pos >= 0) {
                return false;
            }
        }
        return true;
    }
}
